package com.intelligent.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 应收明细表
 * @TableName receivable_detail
 */
@TableName(value ="receivable_detail")
@Data
public class ReceivableDetail implements Serializable {
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 客户ID（关联customer_info表的id）
     */
    private Long customerId;

    /**
     * 销售订单ID（关联sales_orders表的id，可为空，如非订单类应收）
     */
    private Long orderId;

    /**
     * 对账单ID（关联customer_reconciliation表的id，对账后关联）
     */
    private Long reconciliationId;

    /**
     * 应收类型：1-销售订单应收 2-服务费应收 3-其他应收
     */
    private Integer receivableType;

    /**
     * 应收总金额
     */
    private BigDecimal receivableAmount;

    /**
     * 已收金额
     */
    private BigDecimal receivedAmount;

    /**
     * 未收金额（自动计算：receivable_amount - received_amount）
     */
    private BigDecimal unreceivedAmount;

    /**
     * 应收日期（到期日）
     */
    private Date dueDate;

    /**
     * 收款状态：1-待收款 2-部分收款 3-已全额收款 4-坏账
     */
    private Integer status;

    /**
     * 付款条件（如：月结30天、款到发货）
     */
    private String paymentTerm;

    /**
     * 备注（如：分期收款第1期）
     */
    private String remark;

    /**
     * 创建时间（应收产生时间）
     */
    private Date createTime;

    /**
     * 最后更新时间
     */
    private Date updateTime;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 结算类型 0-现结 1-月结 2-货到付款
     */
    private Integer settlementType;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}